package com.acmen.easyapi.generator;

import com.acmen.easyapi.annotation.Param;
import org.springframework.stereotype.Component;

import java.lang.reflect.Field;
import java.util.Random;
import java.util.UUID;

/**
 * @author acmen
 * 身份证号数据生成器
 */
@Component
public class UuidDataGenerator implements DataGenerator {
    @Override
    public boolean matches(Field field, Param param) {
        return field.getName().equalsIgnoreCase("id") || field.getName().equalsIgnoreCase("uuid");
    }

    @Override
    public Object generate(Field field, Param param) {
        if (field.getType().equals(Long.class)) {
            // 如果字段类型为Long
            Random random = new Random();
            // 创建一个随机数生成器对象
            Long l = random.nextLong()/100;
            // 生成一个long类型的随机数并将其除以100
            return l>0?l:-l;
            // 如果l大于0，则返回l，否则返回-l
        } else {
            // 如果字段类型不为Long
            return UUID.randomUUID().toString().replace("-", "");
            // 返回一个UUID并将其字符串形式中的"-"替换为空字符串
        }

    }

    /**
     * 数据获取说明
     *
     * @return
     */
    @Override
    public String getNote() {
        return "身份证号：当字段名为'id'或者'uuid'时，随机生成一个32位的字符。";
    }
}
